# # 没有定义在函数中变量 我们称为全局变量, 全局变量整个文件中的任意位置都可以使用!
# a = "a from 全局"
#
# def test():
#     # 定义在函数内部的称为局部变量,只有在当前函数中可以使用!
#     b = "b from test"
#     print(a,",",b)
# test()
#
# print(a,"-",b) # 报错!!!!


# 在 python 中，类型属于值(数据)，值(数据)有不同类型的区分，变量本身是没有类型的
# 变量的类型是其持有的值的类型!!
'''
    在 python 中，数据分成两种类型:(可变类型,不可变类型)
    bool,strings, tuples, 和 numbers 是不可更改的，
    list,dict,set 是可以修改的。
'''


# 全局变量 vs 局部变量 (不可变类型)
a = 1
a = 3


def test():
    a = 7
test()

def change():
    a = 2 #直接赋值就是在定义新的局部变量
    a = 4
    print(a,"change内部") #就近原则
change()

print(a,"change外部")


# # 全局变量 vs 局部变量 (可变类型)
# a = [1,2,3]
# def change():
#     # a = ["a","b","c"] # 定义了一个局部变量
#     a[0] = 0 # 没有定义过局部变量!!!!!
#     print(a,"change内部") #就近原则
# change()
#
# print(a,"change外部")